-
Notifications
You must be signed in to change notification settings - Fork 0
feat: sync latest work and apply peer feedback improvements #2
Merged
+13,186
−765
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Also corrects the relevance formula in docs/beslutninger.md.
A flat document with hundreds of aliased search or posterUrl fields passed depthLimit.
…(#15) deleteReview only deletes reviews owned by the caller. Mutations are limited per user id and per client IP with token buckets.
Error link sets a reactive var on network failures (fetch error, 502/503/504, non-JSON), cleared on the next successful response. Layout shows one alert with NTNU VPN hint and a retry button; rows stay quiet meanwhile. Backend gets GET /health (SELECT 1, 2 s timeout), Apache proxies it, systemd unit restarts always and requires postgres.
…t queries (#15) Normalized title columns use an IMMUTABLE unaccent wrapper. One- and two-character queries become prefix matches ranked by popularity.
Use Wants instead of Requires for postgresql.service. Map database connection errors to SERVICE_UNAVAILABLE and treat that code as downtime in the frontend. Banner moves focus to main after a successful retry and reports failed retries in a status region. Add pool connection timeout and strengthen the E2E retry test.
…anner (#13) Reviewed: Wants= instead of Requires=, SERVICE_UNAVAILABLE for DB outages, focus and status feedback in the banner.
…-label # Conflicts: # frontend/src/styles/global.css
…navigation (#14) Reviewed: stable focus target for empty rows, flushSync covered by test, 320 px verified.
…efix search for short queries (#15) Fullwidth characters are mapped to % and _ by unaccent, so escaping must happen after normalization. Queries of 1-2 characters now use a generated tsvector with GIN instead of whole-title prefix matching.
…and trust X-Forwarded-For only from loopback (#15) Bind to 127.0.0.1 in production so port 3001 cannot be reached around Apache.
…eview fixes (#15)
…itive and word-prefix search (#15) Reviewed twice: memoized fragment traversal, normalize-then-escape, tsvector word prefix for short queries, loopback-only XFF trust.
Sluttgjennomgang: sikkerhet, tilgjengelighet, Lighthouse, enkel oppstart og ryddig struktur
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017WHmc5j7TieFWVZgP5reYk
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017WHmc5j7TieFWVZgP5reYk
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017WHmc5j7TieFWVZgP5reYk
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017WHmc5j7TieFWVZgP5reYk
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017WHmc5j7TieFWVZgP5reYk
Facets without a query are identical for every visitor but cost four aggregations over the whole titles table on every request (search page without text and every "Se alle" link). Keep them in a per-app TTL cache (5 min, max 64 filter combinations, shared in-flight promise, errors not cached). Facets with search text are never cached. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017WHmc5j7TieFWVZgP5reYk
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017WHmc5j7TieFWVZgP5reYk
- Expose the app's facet cache from setupApi and clear it in the cache test - Assert minRating and availableOnly are part of the cache key - Deduplicate filter arrays in facetCacheKey, with a unit test - Rewrap the pre-computed table bullet in beslutninger.md Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017WHmc5j7TieFWVZgP5reYk
…ions Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017WHmc5j7TieFWVZgP5reYk
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017WHmc5j7TieFWVZgP5reYk # Conflicts: # docs/ytelse.md
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017WHmc5j7TieFWVZgP5reYk
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017WHmc5j7TieFWVZgP5reYk
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017WHmc5j7TieFWVZgP5reYk
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017WHmc5j7TieFWVZgP5reYk
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017WHmc5j7TieFWVZgP5reYk
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017WHmc5j7TieFWVZgP5reYk
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017WHmc5j7TieFWVZgP5reYk
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017WHmc5j7TieFWVZgP5reYk
M8: klargjøring for sluttinnlevering
Brings in development done in the private repository after the initial import. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
nicolaok
approved these changes
Oct 15, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm
Sign in
to join this conversation on GitHub.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Brings in development done in the private repository after the initial import,
and addresses peer review feedback: